#ifndef _TERRAIN_H
#define _TERRAIN_H

typedef struct 
{
  int dimX;
  int dimY;
  char **tab;
} Terrain;

/*Pre-conditions:  non initialise 
  Post-condition: ter inialise et vide */
void terInit(Terrain *);

void terLibere(Terrain *);
/*Pre-condition: ter initialise et non vide
  Post-condition:le terrain aloué dynamiquement est liberer  */

/*Pre-condition: Terrain initialise et non vide
  Resultat:verifie la position de sokoban retourne 1 si les coordonnees (x,y) de Sokoban
  sont valide et que ses coordonnees ne coincide avec celles du mur, 0 sinon */
int  terEstPositionSokoValide(const Terrain *, const int x, const int y);

/*Pre-condition: Terrain initialise et non vide
  Resultat:verifie la position de la caisse retourne 1 si les coordonnees  (x,y) de la caisse
  sont valide et que ses coordonnees ne coincide avec celles du mur, 0 sinon */
int  terEstPositionCaisseValide(const Terrain *, const int x, const int y);

/*Pre-codition: Terrain initialié et non vide
  Resultat: retourne l'element du terrain de coordonees (x,y) */
const char getTerXY(const Terrain *, const int x, const int y);

/*Pre-condition: Terrain initialise et non vide
  Resultat: renvoi la dimension en x du terrain */
const int getDimX(const Terrain *);

/*Pre-condition: Terrain initialise et non vide
  Resultat: renvoi la dimension en y du terrain */
const int getDimY(const Terrain *);

#endif
